﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;
using System.IO;

public partial class QuanTri_NhapTTGV : System.Web.UI.Page
{
    SoLienLacDataContext db = new SoLienLacDataContext();
    SoLienLacDienTu cls = new SoLienLacDienTu();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            MaTuTang();
            txtNgaySinh.Text = DateTime.Now.ToShortDateString();
            rdoNam.Checked = true;
            //LoadLengrv();
            LoadgrvExcel();
        }

    }
    void ThemGV()
    {
        bool kt = true;
        if (txtHoTen.Text == "" || txtDiaChi.Text == "")
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Alert", "alert('Không được để trống Họ tên hoặc địa chỉ');", true);
        }
        else
        {
            kt = KiemTraMail(txtEmail.Text);
            if (kt == false)
            { return; }
            kt = KiemSDT(txtSDT.Text);
            if (kt == false)
            { return; }
            kt = CheckMail(txtEmail.Text);
            if (kt == false)
            { return; }
            kt = CheckDT(txtSDT.Text);
            if (kt == false)
            { return; }
            CanBoGiaoVien cb = new CanBoGiaoVien();
            cb.MaCanBoGV = lblMa.Text;
            cb.DiaChi = txtDiaChi.Text;
            cb.NgaySinh = DateTime.Parse(txtNgaySinh.Text);
            cb.TenCanBo = txtHoTen.Text;
            cb.SDT = txtSDT.Text;
            if (rdoNam.Checked == true)
            {
                cb.GioiTinh = "Nam";
            }
            if (rdoNu.Checked == true)
            {
                cb.GioiTinh = "Nữ";
            }
            cb.Email = txtEmail.Text;
            db.CanBoGiaoViens.InsertOnSubmit(cb);
            db.SubmitChanges();
            LoadgrvExcel();
            Refresh();

        }
    }
    void MaTuTang()
    {
        //string txtMaGV = "";
        //lay 2 số cuối của năm hiện tại làm đầu mã
        string dau = DateTime.Now.Year.ToString();
        string cuoi = dau.Substring(2, 2);
        int nam = int.Parse(cuoi);
        string madautien = cuoi + "001";
        var c = from p in db.CanBoGiaoViens select p.MaCanBoGV;
        if (c.Count() == 0)
        {
            lblMa.Text = madautien;
        }
        if (c.Count() >= 1)
        {
            int max = 0;
            //string s1 = c.ToString();
            string max1;
            foreach (var con in c)
            {
                max = int.Parse(con.Trim().ToString());

            }
            max1 = (max + 1).ToString();
            lblMa.Text = max1;
        }
    }
    bool KiemTraMail(string mail)
    {
        bool kt = true;
        if (mail != "")
        {
            if (cls.CheckEmail(mail) == false)
            {
                kt = false;
                lblThongBao.InnerText = "Nhập không đúng đinh dạng mail";
            }
        }
        if (mail == "")
        {
            kt = false;
            lblThongBao.InnerText = "Không được để trống mail";
        }
        //var c = from p in db.CanBoGiaoViens select p.Email;
        return kt;
    }
    bool KiemSDT(string sdt)
    {
        bool kt = true;
        if (sdt != null)
        {
            if (cls.CheckPhone(sdt) == false)
            {
                kt = false;
                lblThongBao.InnerText = "Nhập sai định dạng Số điện thoại";
            }
        }
        if (sdt == "")
        {
            kt = false;
            lblThongBao.InnerText = "Không được để trống số điện thoại";
        }
        
        return kt;
    }
    void Refresh()
    {
        txtDiaChi.Text = "";
        txtHoTen.Text = "";
        txtEmail.Text = "";
        txtSDT.Text = "";
    }
    void ImportFromExcel(string filePath)
    {


        if (!System.IO.File.Exists(filePath))
        {
            return;
        }

        // Cắt đường dẫn tập tin để kiểm tra xem là xls hay xlsx
        string[] fileParts = filePath.Split('.');

        string connString = "";
        if (filePath.Length > 1 && fileParts[1] == "xls")// sử dụng cho Microsoft Excel 2003
        {
            connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0";
        }
        else // sử dụng cho Microsoft Excel 2007
        {
            connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=Excel 12.0";
        }

        // Tạo đối tượng kết nối
        OleDbConnection oledbConn = new OleDbConnection(connString);
        try
        {
            // Mở kết nối
            oledbConn.Open();

            // Tạo đối tượng OleDBCommand và query data từ sheet có tên "Sheet1"
            OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn);

            // Tạo đối tượng OleDbDataAdapter để thực thi việc query lấy dữ liệu từ tập tin excel
            OleDbDataAdapter oleda = new OleDbDataAdapter();

            oleda.SelectCommand = cmd;

            // Tạo đối tượng DataSet để hứng dữ liệu từ tập tin excel
            DataSet ds = new DataSet();

            // Đổ đữ liệu từ tập excel vào DataSet
            oleda.Fill(ds);
            DataTable dt = ds.Tables[0];
            for (int i = 1; i < dt.Rows.Count; i++)
            {
                int c = (from p in db.CanBoGiaoViens where p.MaCanBoGV == dt.Rows[i][1].ToString() select p).Count();
                if (c == 0)
                {
                    CanBoGiaoVien cb = new CanBoGiaoVien();
                    cb.MaCanBoGV = dt.Rows[i][1].ToString();
                    cb.TenCanBo = dt.Rows[i][2].ToString();
                    cb.NgaySinh = DateTime.Parse(dt.Rows[i][3].ToString());
                    cb.GioiTinh = dt.Rows[i][4].ToString();
                    cb.DiaChi = dt.Rows[i][5].ToString();
                    cb.Email = dt.Rows[i][6].ToString();
                    cb.SDT = dt.Rows[i][7].ToString();
                    db.CanBoGiaoViens.InsertOnSubmit(cb);
                    db.SubmitChanges();
                }
                if (c != 0)
                {
                    CanBoGiaoVien cb = db.CanBoGiaoViens.SingleOrDefault(p => p.MaCanBoGV == dt.Rows[i][1].ToString());
                    cb.TenCanBo = dt.Rows[i][2].ToString();
                    cb.NgaySinh = DateTime.Parse(dt.Rows[i][3].ToString());
                    cb.GioiTinh = dt.Rows[i][4].ToString();
                    cb.DiaChi = dt.Rows[i][5].ToString();
                    cb.Email = dt.Rows[i][6].ToString();
                    cb.SDT = dt.Rows[i][7].ToString();
                    db.SubmitChanges();

                }

            }

            LoadgrvExcel();
        }
        catch
        {
        }
        finally
        {
            //Đóng chuỗi kết nối
            oledbConn.Close();
        }
    }
    private bool CheckFileType(string FileName)
    {
        string ext = Path.GetExtension(FileName);
        if (ext.Equals(".png") || ext.Equals(".xls") || ext.Equals(".xlsx"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    void LoadgrvExcel()
    {
        DataTable dt1 = new DataTable();
        dt1.Columns.Add("MaCanBoGV", typeof(string));
        dt1.Columns.Add("TenCanBo", typeof(string));
        dt1.Columns.Add("NgaySinh", typeof(string));
        dt1.Columns.Add("Nam", typeof(bool));
        dt1.Columns.Add("Nu", typeof(bool));
        dt1.Columns.Add("DiaChi", typeof(string));
        dt1.Columns.Add("Email", typeof(string));
        dt1.Columns.Add("SDT", typeof(string));
        var c = from p in db.CanBoGiaoViens select p;
        if (c.Count() != 0)
        {
            foreach (var con in c)
            {
                DataRow dr = dt1.NewRow();
                dr[0] = con.MaCanBoGV.ToString();
                dr[1] = con.TenCanBo;
                dr[2] = con.NgaySinh.ToShortDateString();
                if (con.GioiTinh == "Nam")
                {
                    dr[3] = true; dr[4] = false;
                }
                if (con.GioiTinh == "Nữ")
                {
                    dr[3] = false; dr[4] = true;
                }
                dr[5] = con.DiaChi;
                dr[7] = con.SDT;
                dr[6] = con.Email;
                dt1.Rows.Add(dr);
            }

        }
        grvExcel.DataSource = dt1;
        grvExcel.DataBind();
    }
    bool CheckMail(string Mail)
    {
        bool kt = true;
        var c = from p in db.CanBoGiaoViens where p.Email == Mail select p.Email;
        if (c.Count() != 0)
        {
            kt = false;
            lblThongBao.InnerText = "Mail đã có người dùng";
        }
        else
        { kt = true; lblThongBao.InnerText = ""; }
        return kt;
    }
    bool CheckDT(string sdt)
    {
        bool kt = true;
        var c = from p in db.CanBoGiaoViens where p.SDT==sdt select p.SDT;
        if (c.Count() != 0)
        {
            kt = false;
            lblThongBao.InnerText = "Số điện thoại này đã có người dùng";
        }
        else { kt = true; lblThongBao.InnerText = ""; }
        return kt;
    }
    protected void btnNhapExcel_Click(object sender, EventArgs e)
    {

        if (fulExcel.HasFile == true)
        {
            if (CheckFileType(fulExcel.FileName) == true)
            {

                string duongdan = Server.MapPath("..\\upload") + "\\" + fulExcel.FileName;
                fulExcel.SaveAs(duongdan);
                ImportFromExcel(duongdan);
            }
            else
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Alert", "alert('Flie nhập không đúng định dạng');", true);
            }
        }
        else
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Alert", "alert('Bạn phải chọn đường dẫn');", true);
        }

    }
    protected void grvExcel_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
    protected void lbtSua_Click(object sender, EventArgs e)
    {
        bool kt = true;
        if (grvExcel.Rows.Count > 0)
        {
            for (int i = 0; i < grvExcel.Rows.Count; i++)
            {
                CheckBox cbk = (CheckBox)grvExcel.Rows[i].Cells[0].FindControl("ckCheck");
                Label MaGV = (Label)grvExcel.Rows[i].Cells[2].FindControl("lblMa");
                TextBox TenCB = (TextBox)grvExcel.Rows[i].Cells[2].FindControl("txtTenCanBo");
                TextBox NgaySinh = (TextBox)grvExcel.Rows[i].Cells[3].FindControl("txtNgaySinh");
                TextBox DiaChi = (TextBox)grvExcel.Rows[i].Cells[5].FindControl("txtDiaChi");
                TextBox SDT = (TextBox)grvExcel.Rows[i].Cells[6].FindControl("txtSDT");
                TextBox Email = (TextBox)grvExcel.Rows[i].Cells[7].FindControl("txtEmail");
                RadioButton Nam = (RadioButton)grvExcel.Rows[i].Cells[4].FindControl("rdoNam");
                RadioButton Nu = (RadioButton)grvExcel.Rows[i].Cells[4].FindControl("rdoNu");
                if (cbk.Checked == true)
                {
                    kt = KiemSDT(SDT.Text);
                    if (kt == false)
                    {
                        return;
                    }
                    kt = KiemTraMail(Email.Text);
                    if (kt == false)
                    { return; }
                    kt = CheckDT(SDT.Text);
                    if (kt == false)
                    { return; }
                    kt = CheckMail(Email.Text);
                    if (kt == false)
                    {
                        return;
                    }
                    //TenCB.Focus();
                    CanBoGiaoVien cb = db.CanBoGiaoViens.SingleOrDefault(p => p.MaCanBoGV == MaGV.Text);
                    //cb.MaCanBoGV = MaGV.Text;
                    cb.DiaChi = DiaChi.Text;
                    cb.Email = Email.Text;
                    if (Nam.Checked == true)
                    {
                        cb.GioiTinh = "Nam";
                    }
                    if (Nu.Checked == true)
                    {
                        cb.GioiTinh = "Nữ";
                    }
                    cb.TenCanBo = TenCB.Text;
                    cb.SDT = SDT.Text;
                    cb.NgaySinh = DateTime.Parse(NgaySinh.Text);
                    db.SubmitChanges();
                    LoadgrvExcel();
                }
            }
        }
    }
    protected void lbtThem_Click(object sender, EventArgs e)
    {
        MaTuTang();
        ThemGV();

    }
}
